02 How to Edit Your Website

site.json — Master Controls

This is the boss file. It controls everything about your site.

{
    "name": "Coffee Bean",              ← Your name (appears in browser tab)
    "title": "Coffee Bean",             ← Browser tab title (same as name usually)
    "favicon": "assets/images/your-icon.png",  ← Optional: custom browser tab icon
    "description": "PhD candidate...",  ← Optional: shows in Google search results
    "highlight_color": "#ffff00",       ← Color for ==highlighted text== (yellow by default)

    "cv": {
        "enabled": true,                ← true = show CV button, false = hide it
        "path": "assets/cv.pdf",        ← Path to your CV file
        "viewer": "pages/cv.html",      ← Don't change this
        "mode": "view",                 ← "view" or "download"
        "label": "View CV"              ← Text on the button
    },

    "header": {
        "name": "Coffee Bean",          ← Big text at top of page
        "subtitle": "PhD Candidate",    ← Small text below your name
        "institution": "Caffeine Tech", ← Third line (shown with •)
        "image": "assets/images/hero/profile1x1.jpg",  ← Profile photo path
        "image_alt": "Coffee Bean"      ← Alt text for photo
    },

    "sections": [
        { "file": "data/about.json",        "id": "about",        "enabled": true },
        { "file": "data/publications.json", "id": "publications", "enabled": true },
        { "file": "data/research.json",     "id": "research",     "enabled": true },
        { "file": "data/education.json",    "id": "education",    "enabled": true },
        { "file": "data/contact.json",      "id": "contact",      "enabled": true }
    ]
}

What you can do in site.json:

If you want to...Do this...
Change your name/titleEdit name and header.name
Change your profile photoEdit header.image path
Change faviconEdit favicon path in site.json
Hide the CV buttonChange cv.enabled to false
Reorder sectionsMove the { } blocks up/down in sections[]
Remove a sectionDelete its { } block OR set "enabled": false
Add a new sectionAdd a new { "file": "data/yourfile.json", "id": "yourid", "enabled": true }
Remove header textSet to "" (empty quotes)
Remove profile photoDelete "image" line or set to ""

about.json — About Me Section

{
    "type": "about",              ← DON'T CHANGE
    "id": "about",                ← DON'T CHANGE
    "data": {
        "label": "ABOUT ME",      ← Section title (shown at top)
        "paragraphs": [           ← Your bio text
            "First paragraph here... **bold text** works!",
            "Second paragraph here..."
        ],
        "buttons": [              ← Optional: links below your bio
            {
                "label": "View My Lab",      ← Button text
                "url": "https://example.com", ← Button link
                "style": "primary",           ← "primary" (black) or "outline" (border)
                "align": "center"             ← "left", "center", "right"
            }
        ]
    }
}

What you can do:

ActionHow
Write your bioEdit text inside paragraphs[]
Add a paragraphAdd a new "text here" line inside the [ ]
Remove a paragraphDelete its "text here" line
Add a buttonCopy the { } block inside buttons[], edit label + url
Remove a buttonDelete its { } block
Remove all buttonsDelete the whole "buttons": [ ... ] line
Remove all paragraphsDelete "paragraphs": [ ... ] line (section shows label only)

publications.json — Your Papers List

{
    "type": "publications",       ← DON'T CHANGE
    "id": "publications",         ← DON'T CHANGE
    "data": {
        "label": "PUBLICATIONS",  ← Section title
        "numbered": false,        ← true = show 1. 2. 3. before each paper
        "papers": [
            {
                "title": "Paper Title Here",           ← Paper name (required)
                "authors": "Author, A., Author, B.",   ← Author list (optional)
                "url": "https://doi.org/...",          ← Link to paper (optional)
                "meta": "Journal Name, 2024",          ← Journal/year in italics (optional)
                "text": "Brief abstract or note...",   ← Extra text (optional)
                "image": "path/to/image.jpg"           ← Thumbnail image (optional)
            }
        ]
    }
}

What you can do:

ActionHow
Add a paperCopy a full { } block and paste it inside papers: [ ], edit the details
Remove a paperDelete its { } block (including the { } and everything inside)
Edit a paperChange the text inside "" quotes
Make numbered listChange "numbered": false to "numbered": true
Remove all papersDelete "papers": [ ... ] line

research.json — Research Interests

You have 3 ways to write this section. Pick ONE:

Option A — Paragraphs (freeform text)

{
    "type": "research",              ← DON'T CHANGE
    "id": "research",                ← DON'T CHANGE
    "data": {
        "label": "RESEARCH",
        "paragraphs": [
            "I study **coffee brewing** and extraction kinetics.",
            "My lab focuses on ==flavor chemistry== and rheology."
        ]
    }
}

Option B — Texts (simple lines)

{
    "type": "research",              ← DON'T CHANGE
    "id": "research",                ← DON'T CHANGE
    "data": {
        "label": "RESEARCH",
        "texts": [
            "**Primary:** Coffee Brewing, Extraction Kinetics",
            "**Secondary:** Chocolate Rheology, Pour-Over Dynamics"
        ]
    }
}

Option C — Items (key-value list)

{
    "type": "research",              ← DON'T CHANGE
    "id": "research",                ← DON'T CHANGE
    "data": {
        "label": "RESEARCH",
        "items": [
            { "label": "Primary", "value": "Coffee Brewing, Extraction Kinetics" },
            { "label": "Secondary", "value": "Chocolate Rheology" }
        ]
    }
}

What you can do:

ActionHow
Switch styleDelete the old field, add the new one (use only 1 at a time)
Add a lineAdd a new "text..." or { } inside the array
Remove a lineDelete its line from the array
Remove all contentDelete the "paragraphs"/"texts"/"items" line

education.json — Your Degrees

{
    "type": "education",             ← DON'T CHANGE
    "id": "education",               ← DON'T CHANGE
    "data": {
        "label": "EDUCATION",
        "items": [
            {
                "degree": "PhD Candidate in Coffee Science",   ← Degree name (required)
                "institution": "Caffeine Tech",                ← University (optional)
                "year": "2022 — Present",                      ← Date (optional)
                "description": "Dissertation on..."            ← Extra text (optional)
            }
        ]
    }
}

What you can do:

ActionHow
Add an entryCopy a { } block, paste inside items: [ ], edit text
Remove an entryDelete its { } block
ReorderMove blocks up/down inside the [ ]
Remove all entriesDelete "items": [ ... ] line

contact.json — Social Links & Contact Info

{
    "type": "contact",              ← DON'T CHANGE
    "id": "contact",                 ← DON'T CHANGE
    "data": {
        "label": "CONNECT",                              ← Section title
        "text": "Let's connect!",                        ← Optional intro text
        "address": "Building 42, University Campus",     ← Optional address
        "extra_line": "Office hours: Mon-Wed 10-4",      ← Optional extra info
        "icons": [
            {
                "name": "googlescholar-old",    ← Icon name (from 45 available)
                "url": "https://scholar.google.com/",  ← Full link
                "label": "Google Scholar"       ← Tooltip text
            },
            {
                "name": "github",
                "url": "https://github.com/",
                "label": "GitHub"
            },
            {
                "name": "mail",
                "url": "mailto:hello@example.com",
                "label": "Email"
            }
        ]
    }
}

Available icon names (45 total):

Academic: googlescholar-old, googlescholar-new, orcid, researchgate, pubmed, scopus, publons, web-of-science, semanticscholar, hal, zenodo, osf, figshare, ieee, acm, arxiv, internetarchive

Social: github, gitlab, githubpages, linkedin, x, bluesky, mastodon, youtube, instagram, facebook, medium, substack, reddit, pinterest, whatsapp, dribbble, behance, artstation

General: mail, globe, university, graduation-cap, refinedgithub

What you can do:

ActionHow
Add an iconCopy a { } block, paste inside icons: [ ], set name, url, label
Remove an iconDelete its { } block
Edit icon URLChange the url value
Change iconChange the name value (see list above)
Remove all iconsDelete "icons": [ ... ] line

Step-by-Step Guides

How to edit any text

Step 1: Open the JSON file for the section you want to edit (e.g. data/about.json for bio, data/education.json for degrees).

Step 2: Find the text you want to change inside "" quotes.

Step 3: Type your new text between the quotes.

Step 4: Save the file and refresh your browser.

{
    "data": {
        "paragraphs": [
            "Old text""New text here"
        ]
    }
}

This works for any text field — name, bio, paper titles, degree names, button labels, etc.

How to add an item

Step 1: Open the JSON file (e.g. data/publications.json to add a paper, data/education.json to add a degree).

Step 2: Find the array [ ] that contains the items.

Step 3: Copy an existing { } block, paste it after the last item, and add a comma after the previous item.

Step 4: Edit the values inside the new { } block.

Step 5: Save and refresh.

{
    "items": [
        { "degree": "Existing Degree", "institution": "Univ", "year": "2024" },
        { "degree": "New Degree", "institution": "Univ", "year": "2025" }
    ]
}

Use this pattern to add papers, degrees, icons, buttons, or any list item.

How to remove an item

Step 1: Open the JSON file.

Step 2: Find the item you want to remove inside the array [ ].

Step 3: Delete the entire { } block for that item, including the comma before or after it.

Step 4: Save and refresh.

{
    "papers": [
        { "title": "Paper I want to keep", "authors": "Author", "url": "#", "meta": "Journal" },
        { "title": "Paper to remove", "authors": "Author", "url": "#", "meta": "Journal" }  ← Delete this block
    ]
}

Use this pattern to remove papers, degrees, icons, paragraphs, or any list item.

How to reorder items

Step 1: Open the JSON file.

Step 2: Find the array [ ] with the items.

Step 3: Cut an entire { } block and paste it higher or lower in the array.

Step 4: Save and refresh. Items will appear in the new order.

{
    "items": [
        { "degree": "Second item", ... },  ← Cut and move this up
        { "degree": "First item", ... }    ← Paste here
    ]
}

How to add media (image, video, model)

Step 1: Open the JSON file for any section (about.json, education.json, etc.).

Step 2: Add the media field inside "data": { }.

Step 3: Set the path or URL.

Step 4: Save and refresh.

{
    "data": {
        "label": "ABOUT ME",
        "paragraphs": [...],
        "image": "path/to/photo.jpg"        ← Add this for a photo
        "video": { "src": "https://youtu.be/...", "ratio": "16/9" }  ← Add this for a video
    }
}

How to enable/disable a section

Step 1: Open data/site.json.

Step 2: Find the section in the sections array.

Step 3: Change "enabled": true to "enabled": false to hide it, or false to true to show it again.

Step 4: Save and refresh.

{
    "sections": [
        { "file": "data/about.json", "id": "about", "enabled": false }  ← Section hidden
    ]
}

The JSON file is kept — only the rendering is skipped.

Quick Cheat Sheet

I want to...I edit...
Change my namesite.jsonname + header.name
Change profile photosite.jsonheader.image
Change my bioabout.jsonparagraphs[]
Add a paperpublications.jsonpapers[]
Change research interestsresearch.jsontexts[] or paragraphs[] or items[]
Add education entryeducation.jsonitems[]
Add social iconcontact.jsonicons[]
Add a photoAny section → "image": "path/photo.jpg"
Add a videoAny section → "video": { "src": "..." }
Add a 3D modelAny section → "model": { "src": "..." }
Hide a sectionsite.json → set "enabled": false
Remove a sectionDelete its { } from sections[] in site.json
Remove CV buttonsite.json"cv": { "enabled": false }
Add a buttonAny section → "buttons": [ { "label": "...", "url": "..." } ]